package com.huawei.hwclouds.lubanops.demo.common.exception.common;

/**
 * 系统错误的错误码定义
 * apm2的所有错误码的定义,错误码的格式 apm2.xxxxyyyy 其中xxxx四位为微服务编号，yyyy四位为错误编号，其中yyyy，0000 到1000 为系统错误，1001-9999 为业务型错误
 * 这里代表的是微服务为SYS开始的微服务，比如 SYS,SYS_HBASE,SYS_ES等的错误码
 *
 * @author y00438022
 */
public enum CommonErrorCode {

    /**
     * 内部错误
     */
    INTERNAL_ERROR("0001", "internal error "),
    /**
     * 对象不存在
     */
    OBJECT_NOT_EXITS("0002", "object not exits"),

    /**
     * 没有登录
     */
    NOT_LOGIN("0003", " not login"),
    /**
     * 没有权限
     */
    HAS_NO_PRIVILEGE("0004", " has no privilege"),

    /**
     * 参数错误
     */
    INVALID_PARAMETER("0005", "invalid parameter"),

    /**
     * json 数据解析错误
     */
    JSON_EXCEPTION("0006", "json process exception"),

    /**
     * http返回码错误
     */
    HTTP_STATUS("0007", "http status code error"),
    /**
     * 格式错误
     */
    WRONG_FORMAT("0008", "wrong format exception"),
    /**
     * url和端口不匹配
     */
    URL_PORT_NOT_MATCH("0009", "url and port not match"),

    /**
     * 租户未开通apm服务
     */
    DOMAIN_NOT_REGISTER("0010", "domain not registered"),

    /**
     * 方法没有实现抛出的异常，代表逻辑错误
     */
    NOT_IMPLEMENT_EXCEPTION("0011", "not implemented exception"),

    /**
     * 代表业务逻辑一定不会运行到这个地方，如果到了这里代表系统严重的错误
     */
    SHOULD_NOT_HAPPEN("0012", "should not happen");

    private String code;

    private String messageFormat;

    private CommonErrorCode(String code, String format) {
        this.code = code;
        this.messageFormat = format;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMessageFormat() {
        return messageFormat;
    }

    public void setMessageFormat(String messageFormat) {
        this.messageFormat = messageFormat;
    }
}
